/*
 * @Author: 0x9DEFA478
 * @Date: 2024-06-10 16:50:01
 * @LastEditTime: 2024-09-22 20:09:25
 * @LastEditors: 0x9DEFA478
 * @Description: 
 * QQ:2652450237
 * ============================================================================================================================================
 * 
 * 
 * 
 *                                                                                               ************      ****************************
 *                                                                                             ************      ****************************  
 *                                                                                           ************      ****************************    
 *                                                                                         ************      ****************************      
 *                                                                                       ************      ************                        
 *                                                                                     ************      ************                          
 *                                                                                   ************      ************                            
 *                                                                                 ************      ************                              
 *                                                                               ************      ************                                
 *                                                                             ************      ************                                  
 *                                                                           ************      ************                                    
 *                                                                         ************      ************                                      
 *                                                                       ************      ************                                        
 *                                                                     ************      ************                                          
 *                                                                   ************      ************                                            
 *                                                                 ************      ************                                              
 *                                                               ************      ************                                                
 *                                                             ************      ************                                                  
 *                                                           ************      ************                                                    
 *                                                         ************      ************                                                      
 *                                                       ************      ************                                                        
 *                                                     ************      ************                                                          
 *                                                   ************      ************                                                            
 *                                                 ************      ************                                                              
 *                                               ************      ************                                                                
 *                                             ************      ************                                                                  
 *                                           ************      ************                                                                    
 *                                         ************      ************                                                                      
 *                                       ************      ************                                                                        
 *                                     ************      ************                                                                          
 *                                   ************      ************                                                                            
 *                                 ************      ************                                                                              
 *                               ************      ************                                                                                
 *                             ************      ************                                                                                  
 *                           ************      ************                                                                                    
 *                         ************      ************                                                                                      
 *       ****************************      ************                                                                                        
 *     ****************************      ************                                                                                          
 *   ****************************      ************                                                                                            
 * ****************************      ************                                                                                              
 * 
 * 
 * 
 * ============================================================================================================================================
 * 
 */
#ifndef hAPI_H_TS_Config_H_
#define hAPI_H_TS_Config_H_
#include "../Config/H_TS_UserConfig.h"



/**
 * 该文件中设置为默认设置
 * 自定义设置请在Config\H_TS_UserConfig.h中添加
 */




#ifndef H_TS_TickType
#define H_TS_TickType Hint32
#endif
//Tick计数使用的类型 必须为有符号
typedef H_TS_TickType H_TS_Tick;


#ifndef H_TS_RunTimeType
#define H_TS_RunTimeType Hint32
#endif
//记时使用的类型 必须为有符号 记录线程运行时间 用于生成CPU占用率
typedef H_TS_RunTimeType H_TS_RunTime;


//最低优先级 数字越大 优先级越低
#ifndef vH_TS_ThreadMaxPriorityValue
#define vH_TS_ThreadMaxPriorityValue                              0x7FFFFFFF
#endif

//默认堆栈大小 单位:字节
#ifndef vH_TS_StackSizeDefault
#define vH_TS_StackSizeDefault                                    1024
#endif

//默认线程属性
#ifndef vH_TS_ThreadAttributeDefault
#define vH_TS_ThreadAttributeDefault {\
  .Priority=0,\
  .StackSize=0,\
  .ThreadName=NULL\
}
#endif

//是否使用CPU使用率统计 开启时需要在H_TS_LL中定义H_TS_DeltaTime类型与H_TS_LL_GetDT宏
//0:关闭 其他:开启
#ifndef vH_TS_IsEnableCPULoadCalculate
#define vH_TS_IsEnableCPULoadCalculate                            1
#endif

//启用简化Tick处理 启用后可以降低调度中断的负担, 但会导致调度屏蔽时无法响应Tick处理，可能导致时间等待类型的阻塞时间比目标值更长
//如果能容忍时间限制API或线程休眠时间变长，可以开启此选项优化性能。
//0:关闭 其他:开启
#ifndef vH_TS_IsEnableSimpleTick
#define vH_TS_IsEnableSimpleTick                                  0
#endif

//获取errno更新 将在线程切换时被调用
#ifndef H_TS_ErrnoUpdate
//示例
//#define H_TS_ErrnoUpdate(in_lastErrnoPointer,in_nextErrnoPointer)   do{*(in_lastErrnoPointer)=errno;errno=*(in_nextErrnoPointer);}while(0)
#endif




#ifndef oH_TS_Crash
//H_TS崩溃调用, 传入一个崩溃原因字符串
#define oH_TS_Crash(_in_Reason)
#endif

#ifndef vH_TS_DebugLevel
//debug等级 0:无任何调试代码 1:关键部分进行变量有效性检查 2:在1的基础上增加句柄有效性检查 3:在2的基础上增加参数有效性检查
#define vH_TS_DebugLevel                                          3
#endif

#ifndef vH_TS_DebugOutput
//调试输出
#define vH_TS_DebugOutput(in_Format,...)                          while(0)
#endif

#define oH_TS_DebugAssert(in_IsError,in_Format,...)               do{if((in_IsError)){vH_TS_DebugOutput(in_Format,##__VA_ARGS__);while(1){}}}while(0)


#if vH_TS_DebugLevel>0
#define oH_TS_Assert_Core(in_IsError,in_Format,...)               oH_TS_DebugAssert(in_IsError,in_Format,##__VA_ARGS__)
#else
#define oH_TS_Assert_Core(in_IsError,in_Format,...)
#endif
#if vH_TS_DebugLevel>1
#define oH_TS_Assert_HandleValid(in_IsError,in_Format,...)        oH_TS_DebugAssert(in_IsError,in_Format,##__VA_ARGS__)
#else
#define oH_TS_Assert_HandleValid(in_IsError,in_Format,...)
#endif
#if vH_TS_DebugLevel>2
#define oH_TS_Assert_ParamValid(in_IsError,in_Format,...)         oH_TS_DebugAssert(in_IsError,in_Format,##__VA_ARGS__)
#else
#define oH_TS_Assert_ParamValid(in_IsError,in_Format,...)
#endif




#endif //hAPI_H_TS_Config_H_
